PROJECT (FTPTest)

SET (EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin CACHE PATH
   "Single output directory for building all executables.")

SET( TARGET_BASE_NAME "${PROJECT_NAME}" )
SET( LIB_NAME "${TARGET_BASE_NAME}Lib" )

#-----------------------------------------------------------------------------
# Let's use the highest warning level.
#-----------------------------------------------------------------------------
IF(CMAKE_BUILD_TOOL MATCHES "(msdev|devenv|nmake)")
  # Use the highest warning level for visual studio.
  IF(CMAKE_CXX_FLAGS MATCHES "/W[0-4]")
    STRING(REGEX REPLACE "/W[0-4]" "/W4" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
  ELSE(CMAKE_CXX_FLAGS MATCHES "/W[0-4]")
    SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4")
  ENDIF(CMAKE_CXX_FLAGS MATCHES "/W[0-4]")
  IF(CMAKE_C_FLAGS MATCHES "/W[0-4]")
    STRING(REGEX REPLACE "/W[0-4]" "/W4" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")
  ELSE(CMAKE_C_FLAGS MATCHES "/W[0-4]")
    SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /W4")
  ENDIF(CMAKE_C_FLAGS MATCHES "/W[0-4]")
  # Disable deprecation warnings for standard C functions in VS2005 and later
  IF(CMAKE_COMPILER_2005)
    ADD_DEFINITIONS(-D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE)
  ENDIF(CMAKE_COMPILER_2005)
ENDIF(CMAKE_BUILD_TOOL MATCHES "(msdev|devenv|nmake)")
IF(CMAKE_BUILD_TOOL MATCHES "make")
  IF(NOT CMAKE_CXX_FLAGS MATCHES "-Wall")
    SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall")
  ENDIF(NOT CMAKE_CXX_FLAGS MATCHES "-Wall")
  IF(NOT CMAKE_C_FLAGS MATCHES "-Wall")
    SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall")
  ENDIF(NOT CMAKE_C_FLAGS MATCHES "-Wall")
ENDIF(CMAKE_BUILD_TOOL MATCHES "make")

SET(Poco_DIR ${PROJECT_SOURCE_DIR})
FIND_PACKAGE(Poco REQUIRED)
IF(${Poco_FOUND})
  INCLUDE_DIRECTORIES(${Poco_INCLUDE_DIRS})
  LINK_DIRECTORIES(${Poco_LIBRARY_DIRS})
ENDIF(WIN32)
ENDIF(${Poco_FOUND})

#-----------------------------------------------------------------------------
SET( EXE_NAME "${TARGET_BASE_NAME}" )
# Add any source files here.
SET( EXE_SRCS
 "My File.cpp"
)
# Add any include files here.
SET( EXE_INCS
  "My File.h"
)

#-----------------------------------------------------------------------------
# The executable.
ADD_EXECUTABLE(${EXE_NAME} ${EXE_SRCS} ${EXE_INCS})

TARGET_LINK_LIBRARIES ( ${EXE_NAME}
  "optimized" CppUnit
  "debug" CppUnitd
  "optimized" PocoFoundation
  "debug" PocoFoundationd
  "optimized" PocoNet
  "debug" PocoNetd
  "optimized" PocoUtil
  "debug" PocoUtild
  "optimized" PocoXML
  "debug" PocoXMLd
)

# Copy the DLLS to where the executable is.
# Only do this if you haven't set your path to the Poco DLLs.
IF(WIN32)
 SET ( DLL_FILES_DEBUG
   ${Poco_BINARY_DIRS}/CppUnitd.dll
   ${Poco_BINARY_DIRS}/PocoFoundationd.dll
   ${Poco_BINARY_DIRS}/PocoNetd.dll
   ${Poco_BINARY_DIRS}/PocoUtild.dll
   ${Poco_BINARY_DIRS}/PocoXMLd.dll
  )

  SET ( DLL_FILES_RELEASE
   ${Poco_BINARY_DIRS}/CppUnit.dll
   ${Poco_BINARY_DIRS}/PocoFoundation.dll
   ${Poco_BINARY_DIRS}/PocoNet.dll
   ${Poco_BINARY_DIRS}/PocoUtil.dll
   ${Poco_BINARY_DIRS}/PocoXML.dll
  )

  # Copy these files to the build tree.
  ADD_CUSTOM_TARGET(CopyDll ALL echo "Copying dlls ...")

  FOREACH(file ${DLL_FILES_DEBUG})
    GET_FILENAME_COMPONENT(fn ${file} NAME)
    SET(tgt ${EXECUTABLE_OUTPUT_PATH}/Debug/${fn})
    SET(src ${file})
    ADD_CUSTOM_COMMAND(
      TARGET CopyDll
      COMMAND ${CMAKE_COMMAND}
      ARGS -E copy_if_different ${src} ${tgt}
      COMMENT "Source copy of dlls"
    )
  ENDFOREACH(file)

  FOREACH(file ${DLL_FILES_RELEASE})
    GET_FILENAME_COMPONENT(fn ${file} NAME)
    SET(tgt ${EXECUTABLE_OUTPUT_PATH}/Release/${fn})
    SET(src ${file})
    ADD_CUSTOM_COMMAND(
      TARGET CopyDll
      COMMAND ${CMAKE_COMMAND}
      ARGS -E copy_if_different ${src} ${tgt}
      COMMENT "Source copy of dlls"
    )
  ENDFOREACH(file)

ENDIF(WIN32)

